home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
007
/
bascom1.tqt
/
BASCOM1.TXT
Wrap
Text File
|
1984-06-16
|
21KB
|
573 lines
B A S I C C O M P I L E R P A T C H E S
**********************************************************
*** This information was derived from the IBM PCSS ***
*** system in BOCA RATON, FL ***
*** ***
*** Origional file from the Charlotte, NC PC-BBS ***
*** 1200/300 N/8/1 (704) 365-4311 ***
**********************************************************
These patches are provided to fix the following known bugs
with the IBM Basic Compiler.
1. The use of CHAIN with COMMON from a large program to a
small program, both with large data areas can cause an "Out
of MEMORY Error"
2. The use of INPUT# with quotes strings of length 1 may
produce random results.
3. When using array calculations such as:
T(J,L)=G(J)*E(L)+T(J+1,T)
an internal error may result.
4. MOD does not return the correct value under certain
conditions.
5. When using several LEFT$, RIGHT$ or MID$'s in string
calculations, a "string formula too complex" error is
received.
6. COMMUNICATION Buffers are destroyed when CHAINing to
another program.
7. BLOAD may fail with an "input past end".
APPLY THESE PATCHES USING DOS 1.1 ONLY!!!
-----------------------------------------
AH0015 Basic Compiler Patches - #1 of 7
Sept 1, 1983
Following is the complete set of Basic Compiler
Patches. for version 1.0. These will be updated as needed,
the date will be in the first line of the text. Before
starting, boot up DOS 1.1 on your machine. These patches
can not be installed properly with any other version of DOS.
Use DOS 1.1 throughout the procedure. If you are faZ}1%I5Rt%Q!"UJTU $Z willlttake you approximately 1/2 to 3/4 hour
to install these patches. Be certain that you are using a
back-up diskette, not the originals. We all make mistakes,
and it is MUCH easier to start over with another diskette
than to try to reconstruct damaged data. When you are done,
be sure to note on the label that these diskettes have been
patched, and the date the patch was installed.
============================================================
UPDATE PROCEDURE
The following is a "script" of the procedure to update
your BASIC Compiler Library and Basic diskettes. Follow it
carefully. If you make a mistake don't panic, just start
again.
First, you will make an exact copy of your BASIC
Compiler Library and Basic diskettes using the DOS DISKCOPY
command. You need two blank formatted diskettes. Put your
DOS diskette in Drive A and a blank formatted diskette in
Drive B. ALL YOUR INPUTS ARE IN <>'s, as in <DISKCOPY A:
B:>. Do NOT type the <>'s.
A><DISKCOPY A: B:><enter>
This command will send the following messages to the screen:
Insert source diskette in drive A:
Insert target diskette in drive B:
Strike any key when ready
You must insert the MASTER copy of the BASIC Compiler
Library diskette in drive A. Anything else will NOT work.
This is your source diskette. You must insert the BLANK
FORMATTED diskette in drive B. (This is your target
diskette.)
Press the enter key to start the disk copy.
The following message will appear on the screen:
Copy another (Y/N)?<Y>
The following message will appear on the screen:
Insert source diskette in drive A:
Insert target diskette in drive B:
Strike any key when ready
Remove your Master Library diskette from drive A and your
copy from drive B. Label your copy "BASIC COMPILER LIBRARY
DISKETTE - UPDATED WORKING COPY". Insert your Basic
Compiler Basic diskette in drive A, and your second
formatted blank diskette in drive B.
Strike the return key to start the copy.
The following message will appear on the screen:
Copy another (Y/N)?<N>
Remove your Master Basic diskette from drive A and your copy
from drive B. Label your copy "BASIC COMPILER BASIC
DISKETTE - UPDATED WORKING COPY". Place your DOS diskette
back in drive A.
========== USING DEBUG TO UPDATE YOUR DISKETTE =============
The DEBUG prompt is "-". Everything that you type will
be after the "-" or after the ".". Immediately after
entering the hex digits following the "." prompts, you must
press the space bar to move to the next byte. The places
that you must press the ENTER key are indicated by <enter>.
Note that the "xxxx" in the data displayed will be filled
with the appropriate memory address.
************************************************************
****** * * * * * * * 1 * * * * * * * *******
************************************************************
==================== PROBLEM DESCRIPTION ===================
The use of CHAIN with COMMON when CHAINing from a large
program with a large data area to a small program with a
large data area may produce an incorrect 'Out of memory'
error.
====================== PROBLEM SOLUTION ====================
UPDATING BASRUN.EXE
The following procedure will update the file
BASRUN.EXE. Remember that the DOS diskette should be in
drive A and the diskette labeled "BASIC COMPILER LIBRARY -
UPDATED WORKING COPY" should be in drive B.
If at any time you do not see the data exactly as it
appears on this procedure, (ignore (cont'd)s) you did
something wrong and you should start again. You can start
again by typing Q followed by ENTER. This returns you to
DOS. Be certain that you are on drive B:; you should see a
B> prompt. If you see anything else then type B: to switch
to your B: drive.
B><A:DEBUG BASRUN.EXE><enter>
-<R><enter>
AX=0000 BX=0000 CX=79AA DX=0000 SP=0000 BP=0000 SI=0000
(cont'd) DI=0000
DS=04B5 ES=04B5 SS=04C5 CS=057B IP=0000 NV UP DI PL NZ NA
(cont'd) PO NC
057B:0000 1E PUSH DS
-<Q><enter>
B><RENAME BASRUN.EXE BASRUN.TMP><enter>
In the listing above, notice that the value of CS=057B.
This is the value that will be used in the next step. Since
CS=057B, the command that is used with Debug is:
E57B:0CF1
The value of the CS register is always used with this
command, it is not NECESSARILY going to be 057B.
B><A:DEBUG BASRUN.TMP><enter>
-<E57B:0CF1><enter>
xxxx:0CF1 3B.<72> C1.<09> 77.<3B> 03.<C1> E9.<77> CA.<05>
(cont'd) FB.<E9>
xxxx:0CF8 A3.<CA> 7A.<FB> 07.<00> 0B.<00> FF.<A3> 74.<7A>
(cont'd) 38.<07>
-<W><enter>
Writing 7C00 bytes
-<Q><enter>
Leave your Working Library diskette in drive B, and
your DOS 1.1 diskette in drive A: for the following update
installation. CONTINUE TO #2
AH0016 Basic Compiler Patches - #2 of 7
************************************************************
****** * * * * * * * 2 * * * * * * * *******
************************************************************
See Basic Compiler Patches #1 of 7 for setup procedure.
==================== PROBLEM DESCRIPTION ===================
The use of the INPUT# statement with quoted strings of
length 1 may produce random results.
====================== PROBLEM SOLUTION ====================
Use the procedure described below to update your IBM
Personal Computer BASIC Compiler.
UPDATING BASRUN.EXE
B><A:DEBUG BASRUN.TMP><enter>
-<E6236><enter>
xxxx:6236 3C.<B1> 22.<FF>
xxxx:6238 75.<3C> 10.<22> 80.<75> FA.<10> 2C.<80> 75.<FA>
(cont'd) 0B.<2C> E8.<75>
xxxx:6240 7E.<0B> 00.<E8> BA.<7C> 22.<00> 22.<BA> E8.<22>
(cont'd) 48.<22> D4.<E8>
xxxx:6248 72.<46> 40.<D4> B1.<72> FF.<3E>
-<W><enter>
Writing 7C00 bytes
-<Q><enter>
B><RENAME BASRUN.TMP BASRUN.EXE><enter>
UPDATING BASCOM.LIB:
The following procedure will update the file
BASCOM.LIB. Remember that the DOS diskette should be in
drive A and the disk labeled "BASIC COMPILER LIBRARY
DISKETTE - UPDATED WORKING COPY" should be in drive B.
If at any time you do not see the data exactly as it
appears on this procedure, you did something wrong and you
should start again. You can start again by typing Q
followed by ENTER. This returns you to DOS.
B><A:DEBUG BASCOM.LIB><enter>ZKECBD7><ENTER>
-xxxx:CBD7 3C.<B1>
-xxxx:CBD8 22.<FF> 75.<3C> 10.<22> 80.<75> FA.<10> 2C.<80>
(cont'd) 75.<FA> 0B.<2C>
-xxxx:CBE0 E8.<75> 00.<0B> 00.<E8> BA.<00> 22.<00> 22.<BA>
(cont'd) E8.<22> 00.<22>
-xxxx:CBE8 00.<E8> 72.<00> 40.<00> B1.<72> FF.<3E>
-<ECCA1><enter>
xxxx:CCA1 39.<3B>
-<ECCA8><enter>
-xxxx:CCA8 3F.<41>
-<W><enter>
Writing 19600 bytes
-<Q><enter>
B>
You are now back in DOS. You should compile and run
the following program to verify that you applied the update
correctly. Be sure to compile and run the program using the
diskette labeled "BASIC COMPILER LIBRARY - UPDATED WORKING
COPY" to verify that the updates to both files work
properly.
10 OPEN "TSTPROG" FOR OUTPUT AS #1
20 FOR I=1 TO 10
30 WRITE #1,I,"A","BB","CCC","DDDD"
40 NEXT I
50 CLOSE
60 OPEN "TSTPROG" FOR INPUT AS #1
70 IF EOF(1) THEN END
80 INPUT #1,J,A$,B$,C$,D$
90 PRINT J;A$;B$;C$;D$
100 GOTO 70
This program should print :
1 ABBCCCDDDD
2 ABBCCCDDDD
3 ABBCCCDDDD
4 ABBCCCDDDD
5 ABBCCCDDDD
6 ABBCCCDDDD
7 ABBCCCDDDD
8 ABBCCCDDDD
9 ABBCCCDDDD
10 ABBCCCDDDD
Continue to #3
AH0017 Basic Compiler Patches - #3 of 7
************************************************************
****** * * * * * * * 3 * * * * * * * *******
************************************************************
See Basic Compiler Patches #1 of 7 for setup procedure.
==================== PROBLEM DESCRIPTION ===================
When using arrays and making calculations such as :
T(J,L)=G(J)*E(L)+T(J+1,I)
the compiler may give an Internal Error or the calculation
may be performed incorrectly. Use the following procedure
to update BASCOM.COM on your "BASIC COMPILER BASIC - UPDATED
WORKING COPY" diskette.
===================== PROBLEM SOLUTION =====================
The following is a "script" of the procedure to patch
your diskette. Follow it carefully. If you should make a
mistake don't panic. Just start again. All user inputs are
in <>'s. Do NOT type the <>'s.
Make sure your DOS 1.1 diskette is in drive A and your
diskette labeled "BASIC COMPILER BASIC - UPDATED WORKING
COPY" is in drive B.
Just a reminder: The DEBUG prompt is "-". All the
things that you type are after the "-" prompt or after the
"." prompt. Immediately after entering the hex digits
following the "." prompts, you must press the space bar to
move to the next byte. When you are entering data after the
"-" prompts or entering the last set of hex digits on a
line, you must press the ENTER key. Note that the "xxxx" in
the data displayed line will be filled with the appropriate
memory address.
A><DEBUG>
-<B:BASCOM.COM>
-<L>
-<D8AB3 L1>
xxxx:8AB3 0C
If you do not see the above line of data after the
"D3AB3 L1" command then you did something wrong and you
should start again. You can start again by typing Q
followed by ENTER. This returns you to DOS.
-<E8AB3>
04B5:8AB3 0C.<1F>
-<W>
Writing A280 bytes
-<Q>
You are now back in DOS. Run the program below to be
sure that you have updated your diskette correctly.
10 DEFINT D,F,N
20 DSD=0
30 FOR N=0 TO 7
40 FSEC=FSEC+1
50 NEXT
60 PRINT "The result is ";512*(1-DSD)*FSEC,"The result
should be 4096"
CONTINUE TO #4
AH0018 Basic Compiler Patches - #4 of 7
************************************************************
****** * * * * * * * 4 * * * * * * * *******
************************************************************
See Basic Compiler Patches #1 of 7 for setup procedure.
==================== PROBLEM DESCRIPTION ===================
Mod does not return the correct value under the following
conditions:
(1) Using a binary noncommutative operator such as MOD, IMP,
or \ (integer division with the backslash)
(2) The left operand is simpler than the right operand
(3) The result is required in the BX register
The following example shows the problem:
10 A=3: B=4: C=10
20 PRINT "C MOD (A + B) = "; C MOD (A + B)
RUN
C MOD (A + B) = 7
In this example the result of the operation will always be
(A + B) regardless of what the true result should be.
So in general the problem is:
A MOD (B + C) = (B + C)
====================== PROBLEM SOLUTION ====================
Use the procedure described below to update your IBM
diskette labeled "BASIC COMPILER BASIC - UPDATED WORKING
COPY".
UPDATING BASCOM.COM
The following procedure will update the file
BASCOM.COM. Remember that the DOS 1.1 diskette should be in
drive A and the diskette labeled "BASIC COMPILER BASIC -
UPDATED WORKING COPY" should be in drive B.
If at any time you do not see the data exactly as it
appears on this procedure, you did something wrong and you
should start again. You can start again by typing Q
followed by ENTER. This returns you to DOS.
B><A:DEBUG BASCOM.COM><enter>
-<E7450><enter>
xxxx:7450 F6.<86> 87.<47> 02.<02> 00.<24> 08.<08> <enter>
-<W><enter>
Writing A280 bytes
-<Q><enter>
CONTINUE TO #5
AH0019 Basic Compiler Patches - #5 of 7
************************************************************
****** * * * * * * * 5 * * * * * * * *******
************************************************************
See Basic Compiler Patches #1 of 7 for setup procedure.
==================== PROBLEM DESCRIPTION ===================
When using several LEFT$, RIGHT$, or MID$'s in string
calculations, a "string formula too complex" error is
received. The error occurs when using a null string. Use
the procedure described below to update your IBM Personal
Computer BASIC Compiler version 1.0.
===================== PROBLEM SOLUTION =====================
The following is a "script" of the procedure to update
your diskette labeled "BASIC COMPILER LIBRARY - UPDATED
WORKING COPY". This procedure will be used to update
BASCOM.LIB and BASRUN.EXE. Follow it carefully. If you
make a mistake don't panic, just start again.
Remove your BASIC diskette from drive B and insert your
LIBRARY diskette. Be sure that your DOS 1.1 diskette is
still in drive A.
Just a reminder: If at any time you do not see the
data exactly as it appears on this procedure, you did
something wrong and you should start again. You can type Q
followed by ENTER to return to DOS and start again.
The DEBUG Search Command (-S) appears to ensure the
procedure will will be inserted in the correct place. Use
the spacebar to move from one field to the next when you
make no entry into that field.
The following procedure will update the file
BASCOM.LIB.
B><A:DEBUG BASCOM.LIB><enter>
-<S1000:0 FFFF C0 01 02 02><enter>
1000:**** <-----use this address (****) next
-<E1000:****><enter>
1000:**** C0.<C8>
-<S1000:**** FFFF BB 00 00 C3 21><enter>
1000:$$$$ <-----use this address ($$$$) next
-<E1000:$$$$><enter>
1000:$$$$ BB.<53> 00.<BB> 00. C3.<00>
1000:xxxx 21.<B1>
-<S1000:$$$$ FFFF C1 16 01 01 CF><enter>
1000:@@@@ <-----use this address (@@@@) next
-<E1000:@@@@><enter>
1000:@@@@ C1.<C2> 16. 01. 01. CF.<CE>
-<S1000:@@@@ FFFF 8A 02 00 00 74><enter>
1000:#### <-----use this address (####) next
1000:xxxx
1000:xxxx
1000:xxxx
1000:xxxx
1000:xxxx
1000:xxxx
-<E1000:####> <-----from above
1000:#### 8A.<A0> 02.<0C> 00.<00> 00.<01> 74.<C0>
1000:xxxx 20.<01> 4D.<5B> 4A.<E8> 5A.<00> 20.<00>
(cont'd) 4D.<BB> 4A.<00> 5A.<00>
1000:xxxx 20.<C3> 4D.<D1> 4A.<9C> 5A.<0B> 20.<00>
(cont'd) 4D.<84> 4A.<02> 5A.<06>
1000:xxxx 20.<01> 4D.<04> 4A.<C4> 5A.<05> 20.<16>
(cont'd) 4D.<01> 4A.<01> 5A.<E7>
1000:xxxx 20.<8A> 4D.<02> 4A.<00> 5A.<00> 20.<74>
-<W><enter
Writing 19600 bytes
-<Q><enter>
UPDATING BASRUN.EXE
The following procedure will update the file
BASRUN.EXE.
B><A:DEBUG BASRUN.EXE><enter>
-<R><enter>
AX=0000 BX=0000 CX=79AA DX=0000 SP=0000 BP=0000 SI=0000
(cont'd) DI=0000
DS=04B5 EX=04B5 SS=04C5 CS=XXXX IP=0000 NV UP DI PL NZ NA C
(cont'd) PO NC
047B:0000 1E PUSH DS
-<Q><enter>
In the listing above, notice that the value of CS=XXXX.
Whatever value is in CS will be used in the next step. For
example, if the value of CS=05A1, then the first command
that is used with DEBUG is <E05A1:4A1A>
B><RENAME BASRUN.EXE BASRUN.TMP><enter>
B><A:DEBUG BASRUN.TMP><enter>
-<EXXXX:4A1A><enter>
xxxx:4A1A BB.<E9> C6.<80><enter>
-<EXXXX:4A9D><enter>
XXXX:4A9D XX.<E8> XX.<7A> XX.<E5>
XXXX:4AA0 XX.<BB> XX.<C6> XX.<00> XX.<C3>
-<W>
Writing 7C00 bytes
-<Q>
CONTINUE TO #6
AH0020 Basic Compiler Patches - #6 of 7
************************************************************
****** * * * * * * * 6 * * * * * * * *******
************************************************************
See Basic Compiler Patches #1 of 7 for setup procedure.
==================== PROBLEM DESCRIPTION ===================
It is possible for COMM buffers to be destroyed when
chaining. If your program opens data files and COMM files
and then chains to another program, the COMM file will be
closed.
Use the procedure described below to update your IBM PC
Basic Compiler. Also note that the integrity of COMM
buffers can be guaranteed only if they are opened before any
other files in the program.
====================== PROBLEM SOLUTION ====================
The following procedure will be used to update your
"Basic Compiler Library - Updated Working Copy" diskette.
If you make a mistake, just start again.
The DOS diskette should be in drive A: and the "Basic
Compiler Library - Updated Working Copy" diskette in drive
B:
B><A:DEBUG BASRUN.TMP><enter>
-<E1BE6><enter>
xxxx:1BE6 52.<2C> 1C.<3B><enter>
-<E2120><enter>
xxxx:2120 8E.<E8> 1E.<00> 10.<36> 05.<90><enter>
-<E5714><enter>
xxxx:5714 8B.<50> F3.<98> 58.<D1> 5B.<E0>
xxxx:5718 5A.<93> 59.<2E> E8.<8C> 5D.<9F> E5.<B8> CB.<48>
(cont'd) 51.<93> 52.<58>
xxxx:5720 53.<E9> 50.<17> E8.<E1> 10.<2E> 00.<8E> 91.<9D>8
(cont'd) F3.<A8> A4.<48>
xxxx:5728 91.<C3><enter>
-<W><enter>
Writing 7C00 bytes
-<Q><enter>
CONTINUE TO #7
AH0021 Basic Compiler Patches - #7 of 7
************************************************************
****** * * * * * * * 7 * * * * * * * *******
************************************************************
See Basic Compiler Patches #1 of 7 for setup procedure.
==================== PROBLEM DESCRIPTION ===================
BLOAD may fail with an "Input Past End" error if the
screen being loaded contains a 1A at a sector boundary.
====================== PROBLEM SOLUTION ====================
Use the following procedure to update your IBM Basic
Compiler version 1.0.
Insert your diskette labeled "Basic Compiler Library -
Updated Working Copy" in drive B:, and your DOS diskette in
drive A:
B><A:DEBUG BASRUN.TMP><enter>
-<E4A69><enter>
xxxx:4A69 04.<D7><enter>
-<W><enter>
Writing 7C00 bytes
-<Q><enter>
B><RENAME BASRUN.TMP BASRUN.EXE><enter>
With your "Basic Compiler Library - Updated Working
Copy" diskette still in drive B: use the following
directions for using DEBUG to install the patch. Again, if
you make a mistake, type Q and start over again.
B><A:><enter>
A><DEBUG><enter>
-<LDS:100 1 7A 1><enter>
-<EDS:15E><enter>
xxxx:015E 04.<D7><enter>
-<WDS:100 1 7A 1><enter>
-<Q><enter>
A>
************************************************************
************** IF ALL SEVEN PATCHES HAVE BEEN **************
************** INSTALLED, THEN YOU HAVE **************
************** FINISHED INSTALLING THE **************
************** BASIC COMPILER PATCHES **************
************************************************************